package cn.psvmc.cxzapi.service.market;

import cn.psvmc.cxzapi.config.mybatisplus.service.impl.AbstractService;
import cn.psvmc.cxzapi.exception.ServiceException;
import cn.psvmc.cxzapi.mapper.market.THotwordMapper;
import cn.psvmc.cxzapi.model.common.SearchEntity;
import cn.psvmc.cxzapi.model.market.THotword;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 热词表 服务实现类
 * @Author auto
 * @Date 2024-08-13
 */
@Service
public class THotwordService extends AbstractService<THotwordMapper, THotword> {

    @Resource
    private THotwordMapper tHotwordMapper;

    /**
    * @Date auto 2024-08-13 新增热词表
    * @Param tHotword 热词表
    * @Return int
    */
    public int add(THotword tHotword){
        return tHotwordMapper.insert(tHotword);
    }

    /**
    * @Date auto 2024-08-13 更新热词表
    * @Param tHotword 热词表模型
    * @Return int
    */
    public int edit(THotword tHotword){
        // 通过id查询数据处理 详情
        THotword originTHotword = this.detail(tHotword.getHid());
        if(originTHotword == null){
            throw new ServiceException("未查询到对应的热词表信息！");
        }

        // 比较数据版本号
        if(!originTHotword.getRversion().equals(tHotword.getRversion())){
            throw new ServiceException("数据已更新，请刷新后重试！");
        }

        // 字段为null 不更新
        return tHotwordMapper.updateById(tHotword);
    }

    /**
    * @Date auto 2024-08-13 查询热词表详情
    * @Param id 唯一id
    * @Return cn.psvmc.cxzapi.model.market.THotword
    */
    public THotword detail(Integer id){
        return tHotwordMapper.selectById(id);
    }

    /**
    * @Date auto 2024-08-13 删除热词表
    * @Param id 唯一id
    * @Param rversion 版本号
    * @Return int
    */
    public int delete(Integer id, Integer rversion){
        // 查询热词表详情
        THotword tHotword = this.detail(id);
        if(tHotword == null){
            throw new ServiceException("未查询到对应的热词表信息！");
        }

        // 比较数据版本号
        if(!rversion.equals(tHotword.getRversion())){
            throw new ServiceException("数据已更新，请刷新后重试！");
        }

        return tHotwordMapper.deleteById(id);
    }

    /**
    * @Date auto 2024-08-13 查询热词表列表
    * @Param iPage 分页
    * @Return com.baomidou.mybatisplus.core.metadata.IPage<cn.psvmc.cxzapi.model.market.THotword>
    */
    public IPage<Map> list(Page<THotword> iPage, SearchEntity entity){
        return tHotwordMapper.listAll(iPage, entity);
    }

    /**
     * @Description 搜索列表
     * @Date 2024/8/19 17:12
     * @Author YWX
     * @Param [name]
     * @Return java.util.List<java.util.Map>
     **/
    public List<Map> listForSel(String name) {
        return tHotwordMapper.listForSel(name);
    }

    /**
     * @Description 使用热词
     * @Date 2024/8/19 17:18
     * @Author YWX
     * @Param [id]
     * @Return void
     **/
    public void used(Integer id) {
        tHotwordMapper.used(id);
    }
}
